package com.ly.gen.entity;

import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * 系统数据库字段表
 *
 * @author luoyun
 * @Date: 2025-06-16
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("gen_data_table_column")
@Schema(description = "系统数据库字段表")
public class GenDataTableColumn implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
	@TableId(type = IdType.ASSIGN_ID)
    @ExcelProperty("主键")
	@Schema(description = "主键")
	private java.lang.String id;
    /**
     * 数据库目录名（通常为def）
     */
    @ExcelProperty("数据库目录名（通常为def）")
	@Schema(description = "数据库目录名（通常为def）")
	private java.lang.String tableCatalog;
    /**
     * 数据库名（Schema名称）
     */
    @ExcelProperty("数据库名（Schema名称）")
	@Schema(description = "数据库名（Schema名称）")
	private java.lang.String tableSchema;
    /**
     * 表名
     */
    @ExcelProperty("表名")
	@Schema(description = "表名")
	private java.lang.String tableName;
    /**
     * 列名
     */
    @ExcelProperty("列名")
	@Schema(description = "列名")
	private java.lang.String columnName;
    /**
     * 排序
     */
    @ExcelProperty("排序")
	@Schema(description = "排序")
	private java.lang.Integer ordinalPosition;
    /**
     * 列默认值
     */
    @ExcelProperty("列默认值")
	@Schema(description = "列默认值")
	private java.lang.String columnDefault;
    /**
     * 是否允许NULL值
     */
    @ExcelProperty("是否允许NULL值")
	@Schema(description = "是否允许NULL值")
	private java.lang.String isNullable;
    /**
     * 数据类型
     */
    @ExcelProperty("数据类型")
	@Schema(description = "数据类型")
	private java.lang.String dataType;
    /**
     * 最大长度
     */
    @ExcelProperty("最大长度")
	@Schema(description = "最大长度")
	private java.lang.Long characterMaximumLength;
    /**
     * 字节长度
     */
    @ExcelProperty("字节长度")
	@Schema(description = "字节长度")
	private java.lang.Long characterOctetLength;
    /**
     * 精度（如DECIMAL(10,2)的10）
     */
    @ExcelProperty("精度（如DECIMAL(10,2)的10）")
	@Schema(description = "精度（如DECIMAL(10,2)的10）")
	private java.lang.Long numericPrecision;
    /**
     * 小数位数
     */
    @ExcelProperty("小数位数")
	@Schema(description = "小数位数")
	private java.lang.Long numericScale;
    /**
     * 时间精度
     */
    @ExcelProperty("时间精度")
	@Schema(description = "时间精度")
	private java.lang.Long datetimePrecision;
    /**
     * 字符集
     */
    @ExcelProperty("字符集")
	@Schema(description = "字符集")
	private java.lang.String characterSetName;
    /**
     * 排序规则（如utf8mb4_general_ci）
     */
    @ExcelProperty("排序规则（如utf8mb4_general_ci）")
	@Schema(description = "排序规则（如utf8mb4_general_ci）")
	private java.lang.String collationName;
    /**
     * 完整列类型定义
     */
    @ExcelProperty("完整列类型定义")
	@Schema(description = "完整列类型定义")
	private java.lang.String columnType;
    /**
     * 列索引类型（PRI=主键, UNI=唯一键, MUL=普通索引）
     */
    @ExcelProperty("列索引类型（PRI=主键, UNI=唯一键, MUL=普通索引）")
	@Schema(description = "列索引类型（PRI=主键, UNI=唯一键, MUL=普通索引）")
	private java.lang.String columnKey;
    /**
     * 额外信息
     */
    @ExcelProperty("额外信息")
	@Schema(description = "额外信息")
	private java.lang.String extra;
    /**
     * 列权限
     */
    @ExcelProperty("列权限")
	@Schema(description = "列权限")
	private java.lang.String privileges;
    /**
     * 列名
     */
    @ExcelProperty("列名")
	@Schema(description = "列名")
	private java.lang.String columnComment;
    /**
     * 列表达式
     */
    @ExcelProperty("列表达式")
	@Schema(description = "列表达式")
	private java.lang.String generationExpression;
    /**
     * 加密类型
     */
    @ExcelProperty("加密类型")
	@Schema(description = "加密类型")
	private java.lang.String encryptionType;
    /**
     * srsId
     */
    @ExcelProperty("srsId")
    @Schema(description = "srsId")
    private java.lang.String srsId;
    /**
     * 排序
     */
    @ExcelProperty("排序")
    @Schema(description = "排序")
    private java.lang.Integer displayOrder;
    /**
     * 创建人
     */
    @ExcelProperty("创建人")
	@Schema(description = "创建人")
	private java.lang.String createBy;
    /**
     * 创建时间
     */
    @ExcelProperty("创建时间")
	@Schema(description = "创建时间")
	private java.time.LocalDateTime createTime;
    /**
     * 修改人
     */
    @ExcelProperty("修改人")
	@Schema(description = "修改人")
	private java.lang.String updateBy;
    /**
     * 修改时间
     */
    @ExcelProperty("修改时间")
	@Schema(description = "修改时间")
	private java.time.LocalDateTime updateTime;
}
